#include<stdio.h>
int main()
{
    FILE*fp=NULL;
    if(NULL == (fp=fopen("demo.c","rb")))
    {
        perror("文件打开失败");
        return -1;
    }
    printf("文件打开成功\n");
    char buf[BUFSIZ]={0};
    size_t ret=0;
    //fread(buf,1,sizeof(buf),fp);
    while((ret = fread(buf,1,sizeof(buf)-1,fp))>0)
    {
        buf[ret]='\0';
        printf("buf:%s",buf);
    }
    fclose(fp);
    printf("------------\n");
    int ch = 0;
    while((ch = fgetc(fp))!=EOF)
    {
        printf("%c",ch);
    }
    //使用ferror判断文件是否读取失败
    int ferror_ret = 0;
    ferror_ret = ferror(fp);
    if(ferror_ret)
    {
        printf("文件读取失败,ferror_ret=%d\n",ferror_ret);
    }
    else
    {
        printf("文件读取成功,ferror_ret%d\n",ferror_ret);
    }

    //使用clearerr清除结束符
    clearerr(fp);
    ferror_ret = ferror(fp);
    //再次打开文件
    if(NULL == (fp=fopen("demo.c","rb")))
    {
        perror("再次文件打开失败");
        return -1;
    }
    printf("再次文件打开成功\n");
     while((ch = fgetc(fp))!=EOF)
    {
        printf("%c",ch);
    }
    printf("ferror_ret=%d\n",ferror_ret);
    return 0;
}